package 字符串的相关api;

/**
 * @author aodre , QQ : 480029069
 * @date 2022/12/28 10:22
 */
public class leetcode1750 {

/*
    输入：s = "1 box has 3 blue 4 red 6 green and 12 yellow marbles"
    输出：true
    解释：句子中的数字是：1, 3, 4, 6, 12 。
    这些数字是按从左到右严格递增的 1 < 3 < 4 < 6 < 12 。

    "100".comapreTo("5") < 0
    别再 把 字符串数字的比较  (比较的 字典序 优先,不是 长度 )
    想当然的 和 int 之间的 比较  扯上关系

 */
    public static void main(String[] args) {
        String s = "hello world 5 x 5";
        System.out.println(areNumbersAscending(s));
    }
    public static boolean areNumbersAscending(String s) {
        String [] nums = s.split(" ");
        int temp = -1;
        for(String str : nums){
            if(Character.isDigit(str.charAt(0))){
                if(Integer.parseInt(str) <= temp){
                    return false;
                }
                temp = Integer.parseInt(str);
            }
        }
        return true;
    }


    public int minimumLength(String s) {
        int len = s.length();
        if (len == 1 || s.charAt(0) != s.charAt(len - 1))
            return len;
        int i = 0, j = len - 1;
        while (i < j) {
            if (s.charAt(i) != s.charAt(j)) {
                return j - i + 1;
            }
            int flag[] = new int[3];
            flag[s.charAt(i) - 'a'] = 1;

            for (i++; i < j; i++) {
                if (flag[s.charAt(i) - 'a'] == 0) {
                    break;
                }
            }

            for (j--; j > i; j--) {
                if (flag[s.charAt(j) - 'a'] == 0) {
                    break;
                }

            }
        }
        return j - i + 1;
    }

    // 优化的再简洁一点

    public int solution(String s) {
        int len = s.length();
        if (len == 1 || s.charAt(0) != s.charAt(len - 1))
            return len;
        int i = 0, j = len - 1;
        while (i < j) {
            if (s.charAt(i) != s.charAt(j)) {
                return j - i + 1;
            }
            // 只需要 一个字符 记录即可
            char ch = s.charAt(i);
            // 注意一定先让 i 加 1 再去 判断，如果不这样的 话， 会有一个 临界点 问题 ，如果不注意这一点，调试的时候还不好去调试的！
            while(++i < j && s.charAt(i) == ch){
            }
            while(--j > i && s.charAt(j) == ch){

            }
        }
        return j - i + 1;
    }
}
